Resumen
Latrodectus es un descargador descubierto por primera vez por Walmart en octubre de 2023. El Malware se hizo muy famoso debido a sus similitudes con el famoso Malware IcedID , no solo en el código en sí sino también en la infraestructura, como informaron anteriormente Proofpoint y Team Cymru S2.
El malware generalmente se entrega a través de campañas de spam de Correo electrónico realizadas por dos actores de amenazas específicos: TA577 y TA578. Entre las diversas características que contiene se encuentra la capacidad de descargar y ejecutar cargas útiles adicionales, recopilar y enviar información del sistema al C2, finalizar procesos y más. En julio de 2024 también se observó la entrega de Latrodectus por un tejón BRC4.
Durante las actividades de búsqueda de Threat Labs, descubrimos una versión Nuevo de la carga útil de Latrodectus, la versión 1.4. Las actualizaciones de malware incluyen un enfoque diferente de desofuscación de cadenas, un punto de conexión Nuevo C2, dos comandos de puerta trasera Nuevo y más.
En este blog, nos centraremos en las características agregadas/actualizadas en esta versión Nuevo.
Análisis de archivos JavaScript
La primera carga útil de la cadena de infección es un archivo JavaScript ofuscado utilizando un enfoque similar al utilizado por otras campañas de Latrodectus. La técnica de ofuscación se emplea mediante la adición de varios comentarios en el archivo, lo que dificulta su análisis, así como el aumento considerable del tamaño del archivo.
El código relevante está presente entre los comentarios basura y, una vez eliminado del archivo, podemos ver el código que se ejecutaría.
El malware busca líneas que comiencen con la cadena "/////", las coloca en un búfer y las ejecuta como una función JS. A continuación, la función ejecutada descarga un archivo MSI de un servidor remoto y lo ejecuta/instala.
Análisis de archivos MSI
Una vez ejecutado/instalado, el archivo MSI utiliza la herramienta rundll32.exe de Windows para cargar una DLL llamada "nvidia.dll" y llama a una función denominada "AnselEnableCheck" exportada por este archivo DLL. La DLL maliciosa se almacena dentro de un archivo CAB llamado "disk1", presente en el propio archivo MSI:
Análisis de Crypter
En un intento de ofuscar la carga útil principal, el "nvidia.dll" utiliza un cifrador llamado Dave. Este encriptador existe desde hace mucho tiempo y fue utilizado en el pasado por otros programas maliciosos como Emotet, BlackBasa y versiones anteriores de Latrodectus.
El cifrador almacena la carga útil que se ejecutará en un recurso o en una sección. En la muestra analizada, la carga útil se almacena en una sección denominada "V+N".
Los pasos utilizados para desofuscar, cargar y ejecutar la carga útil final son bastante simples. El malware mueve una clave a la pila y resuelve las funciones de la API de Windows VirtualAlloc, LoadLibrary y GetProcAddress.
A continuación, asigna memoria mediante la función VirtualAlloc y realiza una operación XOR de varios bytes con los datos de la sección mencionada utilizando la clave establecida anteriormente y el resultado de la operación es la carga útil final. Los siguientes pasos implican alinear la carga útil en la memoria y llamar a su función principal.
Dado que el cifrador primero copia la carga original a la memoria asignada antes de que se realicen los otros pasos, simplemente se puede volcar el contenido de la primera memoria asignada y obtener la carga útil final. Aquí se puede encontrar un script para desempaquetar/desofuscar estáticamente las cargas útiles de Latrodectus utilizando el cifrado Dave.
La carga final es un archivo DLL y el código del cifrado llama a su función DllMain. El siguiente paso es la ejecución de la función exportada "AnselEnableCheck", que es responsable de la ejecución de la carga útil final.
Al observar la carga útil final, notamos que tiene múltiples funciones exportadas, aunque dado que todas tienen el mismo RVA, no importa cuál se llame.
Análisis DLL de Latrodectus
Dado que las características generales de la carga útil principal ya fueron descritas en el pasado por otros investigadores, las siguientes secciones se centrarán en las actualizaciones empleadas por la versión Nuevo Latrodectus.
Ofuscación de cadenas
A diferencia de las versiones anteriores que utilizaban una operación XOR para desofuscar sus cadenas, la versión actualizada utiliza AES256 en modo CTR. La clave AES está codificada en la propia función de desofuscación y el IV cambia para cada cadena que se va a descifrar. La clave utilizada en las muestras analizadas es "d623b8ef6226cec3e24c55127de873e7839c776bb1a93b57b25fdbea0db68ea2".
La función de desofuscación recibe dos parámetros. El primero es un fragmento de datos y el segundo un búfer de salida. El fragmento de datos se usa para almacenar la información utilizada para descifrar la cadena y sigue el formato que se indica a continuación:
- Longitud de la cadena: 2 bytes
- IV: 16 bytes
- Cadena cifrada: tamaño especificado en el primer campo
Una cosa a tener en cuenta es que a veces habrá bytes adicionales después del contenido de la cadena cifrada. La siguiente imagen es un ejemplo de este fragmento de datos:
ID de campaña
En la versión actual de malware, la función de generación de ID de campaña sigue utilizando el mismo enfoque en el que se aplica un hash a una cadena de entrada mediante el algoritmo FNV . Sin embargo, se utilizó una cadena de entrada Nuevo "Wiski", lo que dio como resultado el hash 0x24e7ce9e como ID de campaña.
Comunicación C2
Para su comunicación inicial con el servidor C2, Latrodectus recopila mucha información del sistema infectado, como el nombre de usuario, la versión del sistema operativo y la dirección MAC. La información se formatea utilizando un patrón específico, se encripta mediante el algoritmo RC4, se codifica mediante base64 y se envía al C2.
Las claves RC4 encontradas en las muestras analizadas fueron "2sDbsEUXvhgLOO4Irt8AF6el3jJ0M1MowXyao00Nn6ZUjtjXwb" y "kcyBA7IbADOhw5ztcv09vmF8GYmR38eu7OGdfD7pyRelTPKH1G".
Durante el formateo de datos, podemos marcar el número de versión 1.4 que se está estableciendo.
La información se envía en el cuerpo HTTP a través de una solicitud HTTP POST. El punto de conexión utilizado en las variantes Nuevo es "/test" en lugar de "/live" como se observó en versiones anteriores. Aunque es un indicador muy débil, el uso de este endpoint específico podría indicar que se trata de una versión de prueba del malware.
Comandos
En la versión 1.4, Latrodectus ha introducido dos comandos Nuevo en su carga útil: el ID de comando 22 y 25.
Comando 0x16
En este comando, el malware descarga un shellcode del servidor especificado y lo ejecuta a través de un hilo Nuevo.
La diferencia entre este comando y el comando 14 es que una función que realiza la codificación base64 se pasa como parámetro al propio shellcode. La dirección de la función base64 se almacena en una vista de archivo asignada llamada "12345".
Comando 0x19
En este comando, el malware recibe un nombre de archivo y una ubicación remota desde la que descargar el archivo. A continuación, el nombre del archivo se anexa a %AppData%, el archivo se descarga y su contenido se escribe en la ruta mencionada.
Teniendo en cuenta estas adiciones, a continuación se muestra una tabla de los comandos actualizados compatibles con el malware:
ID de comando | Description |
---|---|
2 | Recopilar una lista de nombres de archivos de escritorio |
3 | Recopilación de información sobre los procesos en ejecución |
4 | Recopilar información del sistema |
12 | Descargar y ejecutar un ejecutable normal |
13 | Descargar y ejecutar una DLL a través de rundll32 |
14 | Descargar y ejecutar un shellcode |
15 | Actualización automática |
17 | Terminar en sí mismo |
18 | Descargar y ejecutar la carga útil IcedID |
19 | Aumentar el tiempo de espera del sueño |
20 | Restablecer contador de solicitudes |
21 | Descargar y ejecutar el módulo stealer |
22 | Descargue y ejecute un shellcode pasando la función de codificación base64 como parámetro |
25 | Descargar un archivo en el directorio %AppData% |
Detección de Netskope
- Netskope Threat Protection
- Gen:Variant.Ulise.493872
- Troyano.Genérico.36724146
- Netskope Advanced Threat Protection proporciona una cobertura proactiva contra esta amenaza.
- Win64.Trojan.ShellCoExec
Conclusión
Latrodectus ha evolucionado bastante rápido, añadiendo características Nuevo a su carga útil. La comprensión de las actualizaciones aplicadas a su carga útil permite a los defensores mantener las canalizaciones automatizadas configuradas correctamente, así como utilizar la información para una mayor búsqueda de variantes Nuevo. Netskope Threat Labs continuará rastreando cómo evoluciona el Latrodectus y su TTP.
Iocs
Todos los IOCs y scripts relacionados con este Malware se pueden encontrar en nuestro repositorio de GitHub.